Telecommunication systems can be time based or packet based. For example, a wireless telephone or cell phone can communicate using a time based technique such as Code Division Multiple Access (CDMA). By contrast, the Internet is a packet based system which can support Internet Protocol (IP) telephony for allowing the real time delivery of voice and other multimedia services. Internet telephony, also known as Voice over Internet Protocol (VoIP), allows for the conversion and transmission of voice data from a time based system into a packet based system. VoIP services are convenient in that they allow users to communicate through the Internet using a personal computer. VoIP services have also merged with the time based system such as the standard PSTN to provide long distance telephony at reduced costs.
Internet technology is session based rather than connection based. The underlying foundation is an IP layer that makes a best effort to deliver packets, even though it provides unreliable connectionless service at the network layer. Session Initiation Protocol (SIP) is an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. SIP is generally used to establish an Internet session and negotiate the capabilities of the session. The sessions can include Internet telephone calls, multimedia distribution, and multimedia conferences. In general, SIP invitations are used to create sessions, and the invitations carry session descriptions that allow participants to agree on a set of compatible media types.
SIP provides signaling services for establishing and negotiating a secure and unsecured session but does not actually provide service offerings. SIP has many uses, including VoIP. Within the context of VoIP, SIP handles the call set up between devices and opens the lines, or streams, of communication. For example, a telecommunications system implementing SIP, may include a SIP client which initiates a SIP call set up with a “SIP server” directly with the server or through the “SIP router,” thereafter followed by a handshaking procedure to open a communication dialogue. The SIP procedure can handle the connection and negotiate the session content. Once a SIP session is established, the SIP client can communicate with the SIP server. For example, the SIP client can run a VoiceXML program to send and receive voice data in an XML format from the SIP server. The SIP server can process the data and work with the SIP client to provide the requested voice service. SIP also makes use of the SIP routers to help route requests to a user's current location, authenticate and authorize users for services, implement provider call-routing policies, and provide features to users. SIP also provides a registration function that allows users to upload their current locations for use by the SIP routers.
In the VoIP context, there may be times when the SIP server's capacity is overloaded by processing and responding to an excessive number of requests in a short period of time. For example, suppose thousands of viewers of the television show American Idol called at roughly the same time to place their vote as to who should advance on the television show and these calls were attempted to be set-up with a particular SIP server. The processing capability of that particular SIP server may not be able to handle all these requests to set-up phone calls thereby causing the SIP server to be overloaded.
There have been attempts in handling overload situations described above. Typically, an upper and a lower threshold of the number of messages to be processed are used to determine if an overload condition occurs and when the overloaded condition no longer exists. For example, when the number of messages that are sent to the SIP server to be processed by the SIP server exceeds the upper threshold of the number of messages to be processed, then the SIP server is designated as being in an overload condition and will therefore limit the number of messages processed until the number of messages to be processed by the SIP is lower than the lower threshold.
However, implementing an upper and a lower threshold to handle overload situations may cause extreme fluctuations of messages to be processed by the SIP servers which can result in instabilities of the system. For example, since SIP uses unreliable messaging, an acknowledgment is required for each message received. If the sender of the message does not receive an acknowledgement, it resends the message. Hence, when the SIP server receives a number of messages that exceeds the upper threshold, it is deemed to be overloaded, and hence the number of messages to be processed is minimized thereby causing the SIP server to not send acknowledgements to some of the received messages. As a result, the overloaded SIP server will continue to receive these requests. The SIP server may not be able to process these requests unless the number of messages is below the lower threshold. The SIP router may then have these requests processed by other SIP servers since the SIP server is overloaded. However, these additional requests may cause the other SIP servers to become overloaded. Hence, the entire system could possibly become overloaded.
There are times though that an overload condition is detected but will quickly revert back to a non-overload condition after the overload condition is detected. For example, “garbage collection” (technique in Java™) may periodically occur to reclaim memory used by objects that will not be accessed again by an application. While the garbage collection technique lasts for a short duration of time (e.g., less than one second), it may cause inactivity for a longer duration of time (e.g., greater than one second) which may result in a burst of traffic when SIP router and SIP servers are able to receive and process messages. If these bursts of activity, which only last a short duration of time, were interpreted as being an overload condition, then an SIP server may be forced to reduce the number of messages to be processed. Further, messages that cannot be processed by that SIP server may be sent to other SIP servers to be processed which may cause these SIP servers to be overloaded as discussed above. Hence, when these bursts of activity occur, it may be advantageous to not enter into an overload state thereby not causing the entire system to become overloaded as discussed above. Further, by not entering into an overload state when these bursts of activity occur, the utilization of SIP servers will be improved.
Therefore, there is a need in the art for managing bursts of traffic in such a manner as to improve the effective utilization of Session Initiation Protocol (SIP) servers.